package com.nancy.java_design.flyweight.demo1;

import java.util.HashMap;

/**
 * 享元模式
 * 工厂类，使用单例模式创建具体的俄罗斯方块模型
 */
public class BoxFactory {
    private HashMap<String, Box> boxes;

    //构造方法私有化，外部无法创建对象，并且在内部创建三个方块对象
    private BoxFactory() {
        boxes = new HashMap<>();
        boxes.put("I", new IBox());
        boxes.put("L", new LBox());
        boxes.put("Z", new ZBox());
    }

    //获取方块
    Box getBox(String key) {
        return boxes.get(key);
    }

    //单例模式，保证只有一个工厂对象
    private static BoxFactory instance = new BoxFactory();

    public static BoxFactory getInstance() {
        return instance;
    }
}
